package ve.socket;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.Iterator;
import java.util.List;
import ve.socket.Cola;

import android.util.Log;


public class enviarArchivo extends Thread {
	public static Cola <String> listaArchivos = new Cola<String>();
	private static final String TAG = "enviarArchivo";

	public static boolean stop = false;

	enviarArchivo() {
		super("Enviar Archivo");
	}

	public static void Stop(){
		stop = true;
	}

	public void run() {
		boolean fallo = false;
		String arch = null;
		int buffer = 8000;
		String Respuesta = null;
		String mSdCardPath = android.os.Environment
		.getExternalStorageDirectory().getAbsolutePath() + "/"+Transmisor.CARPETA;


		File currentDirectory = new File(mSdCardPath); 

		while (!stop){


			//Si fallo, debo retransmitir el paquete. Si no, selecciono un nuevo archivo
			if (!fallo){
				arch = listaArchivos.desencolar();
			}

			//Enviamos el archivo xml

			File f = new File (mSdCardPath+"/"+arch);


			if (!f.canRead()) System.out.println ("Fichero no se puede leer");

			if (f.exists()){
				try{
					OutputStream salida = (Transmisor.socket).getOutputStream();
					InputStream sin = new FileInputStream (f);
					int n = sin.available (); //Num de bytes que pueden ser leidos sin bloqueo

					System.out.println ("Maximo num de bytes: "+n);

					byte buf[] = new byte [buffer];
					while ((n=sin.read(buf)) >= 0)  {
						// =-1 si no hay mas datos
						salida.write (buf, 0, n);
						System.out.println ("bytes enviados: "+n);
					}


				}catch (Exception e){
					System.out.println(e);
				}

				// Si no se ha cerrado el socket
				if (!Transmisor.socket.isClosed()) {

					try {
						// Leo La respuesta de Acom
						Respuesta = Transmisor.in.readLine().replace(";", "\n");
						System.out.println("RESPUESTAA: " + Respuesta);

						if (Respuesta.equals("Saliendo del programa.")){
							Transmisor.Salir();
						}else if (Respuesta.equals("ok")){
							//Si se recibio correctamente el archivo, se elimina del directorio
							f.delete();
							fallo = false;
							Log.v("Transmisor: ", "archivo desencolado: " + arch);
						}else if(Respuesta.equals("fallo")){
							//Si falla, se retransmite el paquete
							fallo = true;
						}
					} catch (IOException e) {

					}

				} 
			}else{
				System.out.println ("Fichero no existe");
			}

		}
	}

}